#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：partial_codes-master 
@File ：config.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/2/23 23:44 
"""

"""
该程序模块用于加载配置文件。用于加载JSON配置文件，以实现配置和程序分离。
"""

import json
from typing import Dict


def log_error(err_msg: str):
	"""打印错误信息"""
	print(err_msg)


def load_config(filepath: str) -> Dict:
	"""
	从 JSON 文件加载配置

	:参数 filename: 配置文件名
	:返回: 包含配置信息的字典
	"""

	try:
		with open(filepath, "r") as file:
			config = json.load(file)
		return config

	except FileNotFoundError:
		log_error(f"未找到配置文件'{filepath}'")
		return {}

	except json.JSONDecodeError:
		log_error(f"解析配置文件'{filepath}'中的JSON时发生错误")
		return {}


# 示例用法
if __name__ == "__main__":
	config_filename = "../config/tmp_config.json"
	config = load_config(config_filename)
	print("Loaded config:")
	print(config)

	# 同样，可以在其他程序中调用config.py，读取json配置文件，做到配置和程序分离
	import config

	# 加载配置
	config_data = config.load_config("../config/tmp_config.json")

	# 使用配置
	port = config_data.get("port", 12345)
	database_config = config_data.get("database", {})
	db_host = database_config.get("host", "localhost")
	db_user = database_config.get("user", "root")
	db_password = database_config.get("password", "")
	db_database = database_config.get("database", "test")
	print(
		f"Connecting to database at {db_host} with credentials: {db_user}, {db_password}, {db_database}"
		f"Using config: port={port}, db_host={db_host}, db_user={db_user}, db_password={db_password}, db_database={db_database}"
	)

	# 同时，可以直接传递字典地址作为参数列表，整个代码更加整洁
	config_data = config.load_config("../config/tmp_config.json")


	def tmp_func(port="666", database=None):
		print(port)
		print(database)


	tmp_func(**config_data)
